Hi Patrick, I wrote in August a similiar script and provided it to the facebook-GREP-Community. No interface at the moment, but you can simply use multiple grep by adding a line after line 13. If nothing is selected, all tables in your document are changed. If one table is selected, only this table is honored. Maybe it is useful. Kai // Kai Rübsamen, www.ruebiarts.de app.doScript(main, ScriptLanguage.JAVASCRIPT, [], UndoModes.ENTIRE_SCRIPT, "style cells based on content"); function main() { var tbl = getTable(); var styleRow = false; var styleColumn = false; changeTable("\\b[1-4]?\\d%", "cellStyle01"); changeTable("\\b[5]\\d%", "cellStyle02"); // - - - - - - - - - - - - - - - - - - FUNCTIONS - - - - - - - - - - - - - - - - - - - - function getTable() { if (app.documents.length == 0) { alert ("Open a document!"); exit(); } // die Auswahl speichern var sel = app.selection; var nSel = sel.length; // ... und prüfen if (nSel == 0) { var res = confirm("Warning:\rDo you want to style all tables in your document?\nOtherwise select a table and start the script again!"); if (res) { var curDoc = app.activeDocument; return curDoc.stories.everyItem().tables.everyItem().getElements(); } else { exit(); } } else if (nSel == 1) { var curSel = sel[0]; // es darf entweder 'Table', 'Cell' oder ein Text innerhalb einer Tabelle ausgewählt sein if (/Table|Cell/.test(curSel.constructor.name) == true || (curSel.hasOwnProperty("baseline") && curSel.parent.constructor.name == "Cell")) { while (curSel.constructor.name != "Table") { curSel = curSel.parent; } return curSel; } else { alert("Hey, wrong selection!\rSelect a table."); exit(); } } else { // wenn mehr wie 1 ausgewählt ist alert("Hey, wrong selection!\rSelect a table."); exit(); } } // - - - - - - - - - - - - - - - - - - - - - - - - - function changeTable(f, s) { app.findGrepPreferences = app.changeGrepPreferences = null; app.findGrepPreferences.findWhat = f; // In der Variablen 'tbl' steckt entweder eine Tabelle oder ein Array. Da eine einzelne // Tabelle keine Eigenschaft 'length' hat, wird mit dem 'constructor' geprüft. if (tbl.constructor.name == "Array") { // eine Schleife durch alle Tabellen im Dokument for (var j = 0; j < tbl.length; j++) { // die aktuelle Tabelle durchsuchen var curTable = tbl ; applyStyle(curTable, s); } } else if (tbl.constructor.name == "Table") { // hier wird nur die jeweils ausgewählte Tabelle behandelt applyStyle(tbl,s); } } function applyStyle(curTable, s) { var curDoc = app.activeDocument; // alle Fundstellen in EINER Tabelle var tableFound = curTable.findGrep(); for (var i = 0; i < tableFound.length; i++) { var curFound = tableFound; // die Zelle, in der sich die aktuelle Fundstelle befindet var parCell = curFound.parent; if (!(styleRow || styleColumn)) { parCell.appliedCellStyle = curDoc.cellStyles.itemByName(s); parCell.clearCellStyleOverrides(true); } else if (styleRow) { // von der Zelle zur Zeile zu allen Zellen (man kann nur Zellen ein Format zuweisen) var cellsInRow = parCell.parentRow.cells.everyItem(); // das Format zuweisen cellsInRow.appliedCellStyle = curDoc.cellStyles.itemByName(s); // sicherheitshalber Abweichungen löschen cellsInRow.clearCellStyleOverrides(true); } else if (styleColumn) { // von der Zelle zur Zeile zu allen Zellen (man kann nur Zellen ein Format zuweisen) var cellsInCol = parCell.parentColumn.cells.everyItem(); // das Format zuweisen cellsInCol.appliedCellStyle = curDoc.cellStyles.itemByName(s); // sicherheitshalber Abweichungen löschen cellsInCol.clearCellStyleOverrides(true); } } } app.findGrepPreferences = app.changeGrepPreferences = null; } // end main
... View more